// pages/index/details/index.js
import Dialog from '../../../../miniprogram_npm/@vant/weapp/dialog/dialog';
import Toast from '../../../../miniprogram_npm/@vant/weapp/toast/toast';
import { clearAlertRefresh } from '../../../../utils/hooks';
import subPub from '../../../../utils/subPub';

const $api = require('../../../../request/api').API;
const app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    activeDate: '',
    id: '',
    // 住户id
    houseId: '',
    // 呼叫器id
    beeperId: '',
    // 设备id
    equipId: '',
    equipMac: '',
    //--------------------------------------------------------------
    linkName: '',
    phone: '',
    address: '',
    provinceName: '',
    cityName: '',
    areaName: '',
    streetName: '',
    villageName: '',
    callingName: '',
    callingStatus: 0,
    callingErrorStatus: 0,
    equipNickName: '',
    installArea: '',
    equipCode: '',
    money: 0,
    // 标签列表
    tagList: [{ beeperTagId: '1', tagName: '帅气' }],
    createDate: '',
    //-----------------------------------------------------------------
    // 设置wifi弹框
    showWifiOverlay: false,
    // 设置新增标签弹框
    showTagOverlay: false,
    // 点击标签分类显示
    selectClassShow: false,
    selectClassName: '点击选择分类',
    selectClassId: '',
    tagClass: [],
    // 是否为主用户
    mainFlag: 0,
    // 修改昵称或者安装区域弹框
    showUpdateData: false,
    showType: 1, //1代表昵称修改 2代表安装区域修改
    tempData: '' //临时数据，用来修改昵称和安装区域
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    this.setData({
      id: options.beeperId || ''
    });
    await this.getData();
    this.sleepSyncDetectionPushId = subPub.on('sleepSyncDetectionPush', ({ deviceId }) => {
      if (deviceId == this.data.equipMac) {
        this.setData({
          callingStatus: 2
        });
      }
    });
    // 监听设备在线
    this.deviceOnlineId = subPub.on('deviceOnline', deviceId => {
      if (deviceId == this.data.equipMac) {
        this.setData({
          callingStatus: 2
        });
      }
    });
    // 监听设备离线
    this.deviceOfflineId = subPub.on('deviceOffline', deviceId => {
      if (deviceId == this.data.equipMac) {
        this.setData({
          callingStatus: 0
        });
      }
    });
  },

  // 请求数据
  async getData() {
    let params = {
      id: this.data.id
    };
    const res = await $api.getBeeperL(params);
    if (res.data.status == 0) {
      var data = res.data.data;
      this.setData({
        houseId: data.houseId,
        beeperId: data.beeperId,
        createDate: data.createDate,
        equipId: data.equipId,
        equipMac: data.equipMac,
        wifiName: data.wifiName,
        wifiPwd: data.wifiPwd,
        linkName: data.linkName,
        phone: data.phone,
        address: data.address == '待补充' ? '' : data.address,
        provinceName: data.provinceName,
        cityName: data.cityName,
        areaName: data.areaName,
        streetName: data.streetName,
        villageName: data.villageName,
        callingName: data.equipName,
        callingStatus: data.equipState,
        callingErrorStatus: data.errorState,
        money: data.balance,
        tagList: data.tags,
        mainFlag: data.mainFlag,
        equipNickName: data.equipNickName,
        installArea: data.installArea,
        equipCode: data.equipCode,
        activeDate: data.activeDate
      });
      if (this.data.address == '') {
        this.setData({
          showWifiOverlay: true
        });
      }
    }
  },
  onSelectClass(event) {
    console.log(event.detail);
    this.setData({
      selectClassName: event.detail.name,
      selectClassId: event.detail.id
    });
  },
  // 跳转用户列表
  toWarningRecord() {
    console.log('equipId', this.data.equipId);
    wx.navigateTo({
      url: '../warningRecord/index?id=' + this.data.equipId
    });
  },
  toSleepDetection() {
    const { equipState, equipId, equipMac } = this.data;
    wx.navigateTo({
      url: `/subcontract/equipment/pages/sleepDetection/index?state=${equipState}&id=${equipId}&equipMac=${equipMac}`
    });
  },
  // 解绑设备
  jiebang() {
    Dialog.confirm({
      title: '提示',
      message: '确认解绑当前设备吗？'
    }).then(res => {
      let params = {
        id: this.data.equipId
      };
      $api
        .unbindBinding(params)
        .then(res => {
          console.log('解绑设备', res);
          if (res.data.status == 0) {
            wx.showToast({
              title: '解绑成功！'
            });
            setTimeout(() => {
              wx.switchTab({
                url: '/pages/equipment/index'
              });
            }, 1000);
          }
        })
        .catch(err => {
          console.log('解绑设备', err);
        });
    });
  },
  // 解除警报
  jieAlarm() {
    Dialog.confirm({
      title: '提示',
      showCancelButton: true,
      cancelButtonText: '误触发',
      confirmButtonText: '已处理',
      closeOnClickOverlay: true,
      message: '确定解除警报吗？'
    });
  },
  /**
   * 解除警报 - 已处理
   */
  handleAlarmLiftedProcess() {
    $api.equipAllClear({ equipId: this.data.equipId, cancelReason: 2 }).then(() => {
      wx.showToast({
        title: '解除成功！'
      });
      clearAlertRefresh(this.data.id, this);
    });
  },

  /**
   * 解除警报 - 误触
   */
  handleFalseAlarmRelease() {
    $api.equipAllClear({ equipId: this.data.equipId, cancelReason: 1 }).then(() => {
      wx.showToast({
        title: '解除成功！'
      });
      clearAlertRefresh(this.data.id, this);
    });
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    subPub.off('sleepSyncDetectionPush', this.sleepSyncDetectionPushId);
    subPub.off('deviceOffline', this.deviceOfflineId);
    subPub.off('deviceOnline', this.deviceOnlineId);
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
  phoneInput(e) {
    let value = e.detail.value;
    this.setData({
      phone: value
    });
  },
  addressInput(e) {
    let value = e.detail.value;
    this.setData({
      address: value
    });
  },
  tagNameInput(e) {
    let value = e.detail.value;
    this.setData({
      addTagName: value
    });
  },

  // 打开修改昵称弹框
  openUpdateData(e) {
    let type = e.currentTarget.dataset.type;
    this.setData({
      showUpdateData: true,
      showType: type,
      tempData: type == 1 ? this.data.equipNickName : this.data.installArea
    });
  },
  // 关闭修改昵称弹框
  closeUpdateData() {
    this.setData({
      showUpdateData: false
    });
  },
  // 输入绑定
  dataInput(e) {
    let value = e.detail.value;
    this.setData({
      tempData: value
    });
  },
  // 修改昵称
  UpdateData() {
    if (!this.data.tempData && this.data.showType == 1) {
      Toast('请输入昵称');
      return;
    } else if (!this.data.tempData && this.data.showType == 2) {
      Toast('请输入安装区域');
      return;
    }
    let params = {
      id: this.data.equipId,
      name: this.data.tempData,
      state: this.data.showType
    };
    $api
      .UpdataName(params)
      .then(res => {
        if (res.data.status == 0) {
          if (this.data.showType == 1) {
            wx.showToast({
              title: '设置昵称成功'
            });
          } else {
            wx.showToast({
              title: '设置成功'
            });
          }

          this.setData({
            showUpdateData: false
          });
          this.getData(this.data.id);
        }
      })
      .catch(err => {
        console.log(err);
      });
  }
});
